從 WebApplicationBuilder 原始碼開始著手
CreateBuilder 階段
服務與中介軟體註冊
Build 階段
端點註冊
執行階段
var builder = WebApplication.CreateBuilder(args);
// 服務註冊
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddHttpClient("github");
// 應用程式建構與中介軟體設定
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
     app.UseSwagger();
     app.UseSwaggerUI();
}
app.UseHttpsRedirection();
// 端點定義
app.MapGet("/ping", () => Results.Ok(new { ok = true }));
app.MapGet("/repos/{owner}/{name}", async (string owner, string name, IHttpClientFactory factory) =>
{
     var http = factory.CreateClient("github");
     var url = $"https://api.github.com/repos/{owner}/{name}";
     var req = new HttpRequestMessage(HttpMethod.Get, url);
     req.Headers.UserAgent.ParseAdd("minimal-api");
     var resp = await http.SendAsync(req);
     return Results.Stream(await resp.Content.ReadAsStreamAsync(), "application/json");
});
app.Run();
以下是流程簡單的描述
狀態:已建立/等待啟動
 → 呼叫 Start()/排程 → 等待執行
  → 執行緒池執行進入點 → 執行中
   → 使用者委派執行:成功/拋出例外/拋出取消例外
    → 完成
     → 若有附加子任務:等待子任務完成 → 最後子任務完成
     → 第二階段完成:設定狀態為完成/錯誤/取消
     → 第三階段完成:清理資源 + 通知父任務 + 執行接續動作
      → 啟動等待/接續任務/多重等待等後續操作